package io.apptik.widget;
import android.support.test.espresso.UiController;
import android.support.test.espresso.ViewAction;
import android.support.test.espresso.matcher.ViewMatchers;
import android.view.View;
import org.hamcrest.Matcher;
public class SetThumbValueAction implements ViewAction {
private int value;
private MultiSlider.Thumb thumb;
private int thumbId = -1;
public SetThumbValueAction(MultiSlider.Thumb thumb, int value) {
this.value = value;
}
public SetThumbValueAction(int thumbId, int value) {
this.value = value;
this.thumbId = thumbId;
}
private String getThumbDesc() {
if (thumbId < 0) {
return thumb.getTag();
} else {
return "thumb Id: " + thumbId;
}
}
private MultiSlider.Thumb getThumb(MultiSlider ms) {
if (this.thumbId < 0) {
return thumb;
} else {
return ms.getThumb(thumbId);
}
}
@Override
public Matcher<View> getConstraints() {
return ViewMatchers.isAssignableFrom(MultiSlider.class);
}
@Override
public String getDescription() {
if (value == Integer.MAX_VALUE) {
return String.format("Move forward thumb: %s", getThumbDesc());
} else if (value == Integer.MIN_VALUE) {
return String.format("Move backward thumb: %s", getThumbDesc());
} else return String.format("Set value (%s) for thumb: %s", value, getThumbDesc());
}
@Override
public void perform(UiController uiController, View view) {
if (value == Integer.MAX_VALUE) {
value = getThumb((MultiSlider) view).getValue() + ((MultiSlider) view).getStep();
} else if (value == Integer.MIN_VALUE) {
value = getThumb((MultiSlider) view).getValue() - ((MultiSlider) view).getStep();
}
getThumb((MultiSlider) view).setValue(value);
}
}